<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>Document</title>
  </head>
  <body>
    <!-- 准备好一个容器 -->
    <div id="test1"></div>
    <div id="test2"></div>
    <div id="test3"></div>

    <!-- 引入react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入react-dom, 用于支持react操作DOM -->
    <script
      type="text/javascript"
      src="../js/react-dom.development.js"
    ></script>
    <!-- 引入babel, 用于将jsx转为js -->
    <script type="text/javascript" src="../js/babel.min.js"></script>

    <script type="text/javascript" src="../js/prop-types.js"></script>

    <script type="text/babel">
      //1. 创建组件
      function Person(props) {
        const { name, age, sex } = props;
        return (
          <ul>
            <li>姓名：{name}</li>
            <li>年龄：{age + 2}</li>
            <li>性别：{sex}</li>
          </ul>
        );
      }

      Person.propTypes = {
        name: PropTypes.string.isRequired, //限制name比传，且为字符串
        age: PropTypes.number, //限制age为数值
        sex: PropTypes.string, //限制sex为字符串
        speak: PropTypes.func, //限制speak为函数
      };

      Person.defaultProps = {
        age: 18, //age默认值为18
        sex: "男", //sex默认值为男
      };

      //2. 渲染组件到页面
      ReactDOM.render(
        <Person name="Twist" age={19} sex="男" speak={speak} />,
        document.getElementById("test1")
      );
      ReactDOM.render(
        <Person name="Oliver" age={19} sex="男" />,
        document.getElementById("test2")
      );

      const p = { name: "Tyler", age: 23, sex: "男" };
      ReactDOM.render(<Person {...p} />, document.getElementById("test3"));

      function speak() {
        console.log("我说话了");
      }
    </script>
  </body>
</html>
